package com.xr.core.system.common.annotation;

import com.xr.core.system.common.enums.LimitTypeEnum;

import java.lang.annotation.*;

/**
 * 自定义限流注解
 */
@Inherited
@Target(ElementType.METHOD)
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface TrafficLimit {

    /**
     * 名字
     */
    String name() default "";

    /**
     * key
     */
    String key() default "";

    /**
     * Key的前缀
     */
    String prefix() default "limit_";

    /**
     * 给定的时间范围 单位(秒) 多少秒内限流
     */
    int period();

    /**
     * 一定时间内最多访问次数 指定秒内限流多少次
     */
    int count();

    /**
     * 限流的类型(用户自定义key 或者 请求ip)
     */
    LimitTypeEnum limitType();

}
